package exception;

/**
 * 异常的抛出
 * throw关键字可以主动抛出一个异常，通常下列情况会主动抛出异常：
 * 1.当程序出现一个异常，但是该异常不应当在当前代码片段被解决时，可以跑出给调用者解决
 * 2.程序遇到一个满足语法但是不满足于业务逻辑的情况时，可以主动创建一个对应的异常将其抛出给调用者告知这个情况。
 */
public class ThrowDemo {
    public static void main(String[] args){//尽量不把异常抛给main方法，main方法是虚拟机调用的
        System.out.println("程序开始了！");
        Person p = new Person();
        //满足语法，但是不满足业务的情况，年龄不可能是10000
        try {
            p.setAge(10000);//当调用一个含有throws声明异常抛出的方法时，编译器要求必须处理这个异常，处理方式有两种
        } catch (IllegalAgeException e) {
            e.printStackTrace();//java.lang.Exception: 年龄不合法
        }
        //1.在当前方法上继续使用throws声明该异常的抛出给上层调用者处理 2.使用try——catch铺货并处理这个异常
        //具体使用那种取决于异常处理的责任问题
        System.out.println("此人年龄为："+p.getAge());//此人年龄为：0，赋值无效，采用默认值
        System.out.println("程序结束了！");
    }
}
